Compartilhar via


Estrutura T> System.Nullable<

Este artigo fornece observações complementares à documentação de referência para essa API.

A Nullable classe representa um tipo de valor que pode ser atribuído null.

Um tipo é considerado anulável se puder ser atribuído a um valor ou puder ser atribuído null, o que significa que o tipo não tem valor algum. Por padrão, todos os tipos de referência, como String, são anuláveis, mas todos os tipos de valor, como Int32, não são.

Em C# e Visual Basic, você marca um tipo de valor como anulável usando a ? notação após o tipo de valor. Por exemplo, int? em C# ou Integer? no Visual Basic declara um tipo de valor inteiro que pode ser atribuído nulla arquivos .

A Nullable<T> estrutura dá suporte ao uso apenas de um tipo de valor como um tipo anulável porque os tipos de referência são anuláveis por design.

A Nullable aula fornece suporte complementar para a Nullable<T> estrutura. A Nullable classe dá suporte à obtenção do tipo subjacente de um tipo anulável e a operações de comparação e igualdade em pares de tipos anuláveis cujo tipo de valor subjacente não dá suporte a operações genéricas de comparação e igualdade.

Propriedades fundamentais

Os dois membros fundamentais da Nullable<T> estrutura são as HasValue propriedades e Value . Se a HasValue propriedade de um Nullable<T> objeto for true, o valor do objeto poderá ser acessado com a Value propriedade. Se a HasValue propriedade for false, o valor do objeto será indefinido e uma tentativa de acessar a Value propriedade lançará um InvalidOperationException.

Conversão boxing e unboxing

Quando um tipo anulável é convertido, o Common Language Runtime encaixota automaticamente o valor subjacente do Nullable<T> objeto, não o Nullable<T> objeto em si. Ou seja, se a HasValue propriedade for true, o conteúdo da Value propriedade será encaixotado. Quando o valor subjacente de um tipo anulável é desempacotado, o Common Language Runtime cria uma nova Nullable<T> estrutura inicializada para o valor subjacente.

Se a HasValue propriedade de um tipo anulável for false, o resultado de uma operação de boxing será null. Consequentemente, se um tipo anulável em caixa for passado para um método que espera um argumento de objeto, esse método deverá ser preparado para lidar com o caso em que o argumento é null. Quando null é desempacotado em um tipo anulável, o Common Language Runtime cria uma nova Nullable<T> estrutura e inicializa sua HasValue propriedade como false.

Componentes do tempo de execução do Windows

Você pode incluir um Nullable<T> tipo como membro de uma estrutura exportada em uma biblioteca WinMD.